home *** CD-ROM | disk | FTP | other *** search
/ Freelog 22 / freelog 22.iso / Prog / Djgpp / GPC2952B.ZIP / doc / gpc / docdemos / dpmidemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-02-09  |  1.7 KB  |  65 lines

  1. program DPMIDemo;
  2.  
  3. { Only for DJGPP }
  4.  
  5. {$X+}
  6.  
  7. { `Byte' is `unsigned char' in C,
  8.   `ShortCard' is `unsigned short' in C,
  9.   `MedCard' is `unsigned long' in C,
  10.   `Word' is `unsigned' in C,
  11.   etc. (all these types are built-in). }
  12.  
  13. type
  14.   TDpmiVersionRet = record
  15.     Major      : Byte;
  16.     Minor      : Byte;
  17.     Flags      : ShortCard;
  18.     CPU        : Byte;
  19.     Master_PIC : Byte;
  20.     Slave_PIC  : Byte;
  21.   end;
  22.  
  23. type
  24.   TDpmiFreeMemInfo = record
  25.     Largest_Available_Free_Block_In_Bytes,
  26.     Maximum_Unlocked_Page_Allocation_In_Pages,
  27.     Maximum_Locked_Page_Allocation_In_Pages,
  28.     Linear_Address_Space_Size_In_Pages,
  29.     Total_Number_Of_Unlocked_Pages,
  30.     Total_Number_Of_Free_Pages,
  31.     Total_Number_Of_Physical_Pages,
  32.     Free_Linear_Address_Space_In_Pages,
  33.     Size_Of_Paging_File_Partition_In_Pages,
  34.     Reserved1,
  35.     Reserved2,
  36.     Reserved3 : MedCard;
  37.   end;
  38.  
  39. function DpmiGetVersion (var Version: TDpmiVersionRet): Integer;
  40.          asmname '__dpmi_get_version';
  41.  
  42. function DpmiGetFreeMemoryInformation
  43.          (var MemInfo: TDpmiFreeMemInfo): Integer;
  44.          asmname '__dpmi_get_free_memory_information';
  45.  
  46. var
  47.   Version: TDpmiVersionRet;
  48.   MemInfo: TDpmiFreeMemInfo;
  49.  
  50. begin
  51.   if DpmiGetVersion (Version) = 0 then
  52.     begin
  53.       WriteLn ('CPU type :       ', Version.cpu, '86');
  54.       WriteLn ('DPMI major :       ', Version.Major);
  55.       WriteLn ('DPMI minor :       ', Version.Minor);
  56.     end
  57.   else
  58.     WriteLn ('Error in DpmiGetVersion');
  59.   if DpmiGetFreeMemoryInformation (MemInfo) = 0 then
  60.     WriteLn ('Free DPMI memory : ',
  61.              MemInfo.Total_Number_Of_Free_Pages, ' pages.')
  62.   else
  63.     WriteLn ('Error in DpmiGetMemoryInformation');
  64. end.
  65.